<?php
namespace app\controller;

use app\controller\BaseController;
use app\controller\FormValidator\RefugieFormValidator;
use DateTime;
use model\CampQuery;
use model\HistoriqueRefugie;
use model\HistoriqueRefugieQuery;
use model\PaysQuery;
use model\Refugie;
use model\RefugieQuery;
use Symfony\Component\HttpFoundation\Request;

class RefugieController extends BaseController
{    
    public function transfertAction(Request $request)
    {
        $session = $this->getSession();
        $flashBag = $this->getFlashBag();
         
        if($request->isMethod('POST'))
        {
            $form = $request->request->all();
            $validator = new RefugieFormValidator($form);
            $errors = $validator->isValid();
            if(is_bool($errors))
            {
                $date = DateTime::createFromFormat('j-M-Y',date("j-M-Y"));
                
                $refugiee = RefugieQuery::create()->findOneById($form['id_refugie']);
                $camps = CampQuery::create()->findOneById($form['id_camps']);
                   
                $historiqueBase = HistoriqueRefugieQuery::create()
                        ->filterByIdCamp($camps->getId())
                        ->filterByIdrefugie($refugiee->getId())
                        ->findOne();
                
                $date = \DateTime::createFromFormat('j-M-Y',date("j-M-Y"));
                
                if($historiqueBase != null)
                {
                    $historiqueBase = new HistoriqueRefugie();
                    $historiqueBase->setIdcamp($camps->getId());
                    $historiqueBase->setIdrefugie($refugiee->getId()); 
                    $historiqueBase->setDateArrive($date);
                    $historiqueBase->save(); 
                }
                else
                {
                    $historiqueRefugie = new HistoriqueRefugie();
                    $historiqueRefugie->setIdcamp($camps->getId());
                    $historiqueRefugie->setIdrefugie($refugiee->getId()); 
                    $historiqueRefugie->setDateArrive($date);
                }
                
                $historiqueRefugie->save();
                
                //$session->set('user',$admin);
                //var_dump($this->getUser()); die('oki 4');
                
                $flashBag->add('success', 'Refugié transféré avec succès');
                
                return $this->redirect($this->generateUrl('admin_home',array())); // Si il y a des paramêtres dans la route les mettre dans le tableau
                
            }
            else
            {
                $flashBag->add('warning', "Les champs suivant ne sont pas valides ".  implode(', ', $errors));
            }
        }
        
        $camps = CampQuery::create()->find();
        $refugies = RefugieQuery::create()->find();
        
        return $this->render('admin/refugie/transfertRefugie.php', 
                array('camps' => $camps,'refugies' => $refugies ));  
    }
    
    public function rechercheAction(Request $request)
    {
        $session = $this->getSession();
        $flashBag = $this->getFlashBag();
         
        if($request->isMethod('POST'))
        {
            $form = $request->request->all();
            $validator = new RefugieFormValidator($form);
            $errors = $validator->isValid();
            if(is_bool($errors))
            {
                if(!empty($form['nom']))
                {
                    $refugie = RefugieQuery::create()->findOneByNom($form['nom']);
                    if($refugie !=null)
                    {
                       return $this->redirect($this->generateUrl('home',array("refugie" => $refugie))); 
                    }
                    else
                    {
                        $flashBag->add('warning', 'Aucun nom connu');
                        return $this->redirect($this->generateUrl('home',array())); // Si il y a des paramêtres dans la route les mettre dans le tableau
                    }
                }
                if(!empty($form['prenom']))
                {
                    $refugie = RefugieQuery::create()->findOneByPrenom($form['prenom']);
                    if($refugie !=null)
                    {
                       return $this->redirect($this->generateUrl('home',array("refugie" => $refugie))); 
                    }
                    else
                    {
                        $flashBag->add('warning', 'Aucun prenom connu');
                        return $this->redirect($this->generateUrl('home',array())); // Si il y a des paramêtres dans la route les mettre dans le tableau
                    }
                }
                if(!empty($form['pays']))
                {
                    $p = PaysQuery::create()->findOneByNom($form['pays']);
                    if($p !=null)
                    {
                       return $this->redirect($this->generateUrl('home',array("pays" => $p))); 
                    }
                    else
                    {
                        $flashBag->add('warning', 'Aucun pays connu');
                        return $this->redirect($this->generateUrl('home',array())); // Si il y a des paramêtres dans la route les mettre dans le tableau
                    }
                }
                
                //$session->set('user',$admin);
                //var_dump($this->getUser()); die('oki 4');
                
                $flashBag->add('warning', 'Aucun champs selectionner');
                
                return $this->redirect($this->generateUrl('home',array())); // Si il y a des paramêtres dans la route les mettre dans le tableau
                
            }
            else
            {
                $flashBag->add('warning', "Les champs suivant ne sont pas valides ".  implode(', ', $errors));
            }
        }
        
        return $this->render('admin/refugie/newRefugie.php', 
                array());
    }
    
    public function newAction(Request $request)
    {
        $session = $this->getSession();
        $flashBag = $this->getFlashBag();
         
        if($request->isMethod('POST'))
        {
            $form = $request->request->all();
            $validator = new RefugieFormValidator($form);
            $errors = $validator->isValid();
            if(is_bool($errors))
            {
                $date = DateTime::createFromFormat('j-M-Y',$form['date_naissance']);
                
                $refugie = new Refugie();
                $refugie->setNom($form['nom']);
                $refugie->setPrenom($form['prenom']);
                $refugie->setSexe($form['sexe']);
                $refugie->setDateNaissance($date);
                $refugie->setNationalite($form['nationalite']);
                $refugie->setVisible(isset($form['visible']));
                $refugie->save();
                
                //$session->set('user',$admin);
                //var_dump($this->getUser()); die('oki 4');
                
                $flashBag->add('success', 'Refugié crée avec succès');
                
                return $this->redirect($this->generateUrl('admin_home',array())); // Si il y a des paramêtres dans la route les mettre dans le tableau
                
            }
            else
            {
                $flashBag->add('warning', "Les champs suivant ne sont pas valides ".  implode(', ', $errors));
            }
        }
        
        return $this->render('admin/refugie/newRefugie.php', 
                array());
    }
    
    public function listAction(Request $request)
    {
        $refugies = RefugieQuery::create()->find();
        
        return $this->render('admin/refugie/list.php', 
                array('refugies' => $refugies,
                ));
    }
    
}